Data storage systems are arrangements of hardware and software that include one or more storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, or deleted, for example. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
Data storage systems commonly arrange file-based data in file systems. Such file systems include both data and metadata. The metadata organizes the file data on disk structures, such that each file's data can be located, placed in proper sequence, and kept separate from other files' data. Known types of file system metadata include, for example, inodes, indirect blocks (IBs), per-block metadata (BMD), and virtual block maps (VBM). Data and metadata of a file system may be stored in blocks, where a “block” is the smallest unit of allocatable storage in the file system. Non-limiting example sizes of blocks are 4 KB, 8 KB, and/or 32 KB, for example.
As is known, inodes store information about files and may include pointers to IBs. IBs include pointers that point either to other IBs or to data blocks. IBs may be arranged in multiple layers, forming an IB tree, with the leaves of the tree pointing to data blocks. In some implementations, virtual block maps (VBMs) are placed between leaf IB pointers and respective data blocks to provide data block virtualization. VBMs are small metadata structures, such that many VBMs may be stored per block (i.e., in a “VBM block”). IBs, VBM blocks, and data blocks may each have associated BMD. BMDs store block-specific information, which may include a checksum or CRC (cyclic redundancy check) of the contents of the block to which it refers. Many BMDs may be stored in a single block (i.e., in a “BMD block”).